1. Field of the Invention
The present invention generally relates to techniques for rendering graphical data and, in particular, to systems and methods for utilizing a plurality of graphics pipelines to render graphical data to a display device.
2. Related Art
Computer graphical display systems are commonly used for displaying graphical representations of two-dimensional and/or three-dimensional objects on a two-dimensional display device, such as a cathode ray tube, for example. Current computer graphical display systems provide detailed visual representations of objects and are used in a variety of applications.
FIG. 1 depicts an exemplary embodiment of a conventional computer graphical display system 15. A graphics application 17 stored on a computer 21 defines, in data, an object to be rendered by the system 15. To render the object, the application 17 transmits graphical data defining the object to graphics pipeline 23, which may be implemented in hardware, software, or a combination thereof. The graphics pipeline 23, through well known techniques, processes the graphical data received from the application 17 and stores the graphical data in a frame buffer 26. The frame buffer 26 stores the graphical data necessary to define the image to be displayed by a display device 29. In this regard, the frame buffer 26 includes a set of data for each pixel displayed by the display device 29. Each set of data is correlated with the coordinate values that identify one of the pixels displayed by the display device 29, and each set of data includes the color value of the identified pixel as well as any additional information needed to appropriately color or shade the identified pixel. Normally, the frame buffer 26 transmits the graphical data stored therein to the display device 29 via a scanning process such that each line of pixels defining the image displayed by the display device 29 is consecutively updated.
When large images are to be displayed, multiple display devices may be used to display a single image, in which each display device displays a portion of the single image. In such an embodiment, the multiple display devices are treated as a single logical screen (SLS), and different portions of an object may be rendered by different display devices. FIG. 2 depicts an exemplary embodiment of a computer graphics system 41 capable of utilizing a plurality of display devices 31-34 to render a single logical screen. In this embodiment, a client computer 42 stores the application 17 that defines, in data, an image to be displayed. Each of the display devices 31-34 may be used to display a portion of an object such that the display devices 31-34, as a group, display a single large image of the object.
To render the object, graphical data defining the object is transmitted to an SLS server 45. The SLS server 45 routes the graphical data to each of the graphics pipelines 36-39 for processing and rendering. For example, assume that the object is to be positioned such that each of the display devices 31-34 displays a portion of the object. Each of the pipelines 36-39 renders the graphical data into a form that can be written into one of the frame buffers 46-49. Once the data has been rendered by the pipelines 36-39 to the point that the graphical data is in a form suitable for storage into frame buffers 46-49, each of the pipelines 36-39 performs a clipping process before transmitting the data to frame buffers 46-49.
In the clipping process, each pipeline 36-39 discards the graphical data defining the portions of the object that are not to be displayed by the pipeline""s associated display device 31-34 (i.e., the display device 31-34 coupled to the pipeline 36-39 through one of the frame buffers 46-49). In other words, each graphics pipeline 36-39 discards the graphical data defining the portions of the object displayed by the display devices 31-34 that are not coupled to the pipeline 36-39 through one of the frame buffers 46-49. For example, pipeline 36 discards the graphical data defining the portions of the object that are displayed by display devices 32-34, and pipeline 37 discards the graphical data defining the portions of the object that are displayed by display devices 31, 33, and 34.
Thus, each frame buffer 46-49 should only store the graphical data defining the portion of the object displayed by the display device 31-34 that is coupled to the frame buffer 46-49. At least one solution for providing SLS functionality in an X Window System environment is taught by Jeffrey J. Walls, Ian A. Elliott, and John Marks in U.S. Pat. No. 6,088,005, filed Jan. 10, 1996, and entitled xe2x80x9cDesign and Method for a Large, Virtual Workspace,xe2x80x9d which is incorporated herein by reference.
A plurality of networked computer systems are often employed in implementing SLS technology. For example, in the embodiment shown by FIG. 2, the client 42, the SLS server 45, and the individual graphics pipelines 36-39 may each be implemented via a single computer system interconnected with the other computer systems within the system 41 via a computer network, such a local area network (LAN), for example. The X Window System is a standard for implementing window-based user interfaces in a networked computer environment, and it may be desirable to utilize X Protocol in rendering graphical data in the system 41. For a more detailed discussion of the X Window System and the X Protocol that defines it, see Adrian Nye, X Protocol Reference Manual Volume Zero (O""Riley and Associates 1990).
U.S. patent application Ser. No. 09/138,456, filed on Aug. 21, 1998, and entitled xe2x80x9c3D Graphics in a Single Logical Screen Display Using Multiple Remote Computer Systems,xe2x80x9d which is incorporated herein by reference, describes an SLS system of networked computer stations that may be used to render two-dimensional (2D) and three-dimensional (3D) graphical data. In the embodiments described by the foregoing patent application, X Protocol is generally utilized to render 2D graphical data, and OpenGL Protocol (OGL) is generally used to render 3D graphical data.
Although it is possible to render 2D and/or 3D data in conventional computer graphical display systems, including SLS environments, there exists limitations that restrict the performance and/or image quality exhibited by the conventional computer graphical display systems. More specifically, high quality images, particularly 3D images, are typically defined by a large amount of graphical data, and the speed at which conventional graphics pipelines 36-39 can process the graphical data defining an object is limited. Thus, a trade-off often exists between increasing the quality of the image rendered by a computer graphical display system and the speed at which the image can be rendered, and there exists a need in the industry for better techniques and systems for rendering graphical data.
Briefly described, the present invention relates to utilizing a plurality of graphics pipelines to render graphical data to a display monitor. In this regard, embodiments of the present invention may be construed as providing methods for producing a composite digital video data stream, which contains data corresponding to an image to be rendered. A preferred embodiment includes the step of receiving multiple digital video data streams. Preferably, a first of the multiple digital video data streams contains processed pixel data corresponding to at least a portion of the image to be rendered, and a second of the multiple digital video data streams contains processed pixel data corresponding to at least a portion of the image to be rendered as well as information, such as a chroma-key value, associated with at least some of the processed pixel data. The embodiment also includes the step of combining the multiple digital video data streams into the composite digital video data stream by referencing the chroma-key values.
Other embodiments of the present invention may be construed as providing devices for enabling production of a composite digital video data stream. In this regard, a preferred embodiment includes a first compositing element, and a second compositing element. The first compositing element is configured to receive pixel data from a first of the multiple digital video data streams so that, in response to receiving the pixel data from the first of the multiple digital video data streams, a frame of data is provided that corresponds to a resolution of the image to be rendered. Additionally, the first compositing element inserts pixel data from the first of the multiple digital video data streams into the frame of data. The second compositing element communicates with the first compositing element, and is configured to receive pixel data and chroma-key values from a second of the multiple digital video data streams. The second compositing element also is configured to overwrite at least a portion of the frame of data with pixel data of the second of the multiple digital video data streams so that pixel data from the first of the multiple digital video data streams remains in the frame of data at locations corresponding to occurrences of the chroma-key value.
An alternative embodiment of the present invention includes means for receiving the multiple digital video data streams, and means for combining the multiple digital video data streams into the composite digital video data stream by referencing chroma-key values.
Another alternative embodiment of the present invention includes logic configured to receive the multiple digital video data streams, and logic configured to combine the multiple digital video data streams into the composite digital video data stream by referencing chroma-key values. In some of these embodiments, the various logic may be embodied in computer readable media.
Other features and advantages of the present invention will become apparent to one skilled in the art upon examination of the following detailed description, when read in conjunction with the accompanying drawings. It is intended that all such features and advantages be included herein within the scope of the present invention and protected by the claims.